package com.strong;

import com.strong.faker.*;
import com.strong.model.Place;
import com.strong.model.person.Name;
import com.strong.model.person.Surname;
import com.strong.utils.FakerUtils;

import static com.strong.FakerConstants.*;

/**
 * 模拟数据 生成类
 *
 * @author simen
 * @date 2023/04/07
 */
public class Faker {

    /**
     * 返回 位置 模拟数据生成对象
     *
     * @return {@link PlaceFaker}
     */
    public static PlaceFaker place() {
        return new PlaceFaker();
    }

    /**
     * 返回 人名 模拟数据生成对象
     *
     * @return {@link PersonNameFaker}
     */
    public static PersonNameFaker personName() {
        return new PersonNameFaker();
    }

    /**
     * 返回 身份证号码 模拟数据生成对象
     *
     * @return {@link IdNumberFaker}
     */
    public static IdNumberFaker idNumber() {
        return new IdNumberFaker();
    }

    /**
     * 返回 人 模拟数据生成对象
     *
     * @return {@link IdNumberFaker}
     */
    public static PersonFaker person() {
        return new PersonFaker();
    }

    /**
     * 返回 手机号码 模拟数据生成对象
     *
     * @return {@link IdNumberFaker}
     */
    public static MobilePhoneFaker mobilePhone() {
        return new MobilePhoneFaker();
    }

    /**
     * 返回 固话号码 模拟数据生成对象
     *
     * @return {@link IdNumberFaker}
     */
    public static TelephoneFaker telephone() {
        return new TelephoneFaker();
    }

    /**
     * 返回 电子邮箱地址 模拟数据生成对象
     *
     * @return {@link IdNumberFaker}
     */
    public static EmailFaker email() {
        return new EmailFaker();
    }
//
//    /**
//     * 返回 车牌 模拟数据生成对象
//     *
//     * @return {@link IdNumberFaker}
//     */
//    public static LicencePlateFaker licencePlate() {
//        return LicencePlateFaker.getInstance();
//    }

    public static void initialize() {
        // 初始化地址相关参数
        FakerUtils.injectList(LIST_ALL_PLACE, STR_FILE_PLACE, Place.class);

        // 初始化姓名相关参数
        FakerUtils.injectList(LIST_ALL_SURNAME, STR_FILE_SURNAME, Surname.class);
        FakerUtils.injectList(LIST_ALL_FEMALE_NAME, STR_FILE_FEMALE_NAME, Name.class);
        FakerUtils.injectList(LIST_ALL_MALE_NAME, STR_FILE_MALE_SURNAME, Name.class);
    }

}
